#[钛妹]: 差集更新和交集更新是什么操作？和普通方法有什么区别？
#[钛哥]: 这些是原地修改的版本，就像update之于union，咱们用实例来说话！

#[钛妹]: difference_update怎么用？
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5}
set1.difference_update(set2)  # 原地移除共有元素
print(set1)                   # {1, 2}

#[钛妹]: 能对比下普通差集吗？
set3 = {1, 2, 3, 4}
set4 = {3, 4, 5}
new_set = set3 - set4        # 创建新集合
print(new_set)               # {1, 2} 
print(set3)                  # 原集合不变 {1,2,3,4}

#[钛妹]: discard和remove有什么区别？
set5 = {"a", "b", "c"}
set5.discard("d")            # 删除不存在的元素不报错
set5.remove("d")             # 这里会引发KeyError

#[钛妹]: 正确删除应该怎么写？
set5.discard("b")            # 安全删除存在的元素
print(set5)                  # {'a', 'c'}

#[钛妹]: 普通交集怎么用？
set6 = {"苹果", "安卓", "鸿蒙"}
set7 = {"安卓", "Windows"}
common = set6 & set7         # 运算符写法
print(common)                # {'安卓'}

#[钛妹]: 方法版本呢？
common_v2 = set6.intersection(set7)
print(common_v2)             # 结果相同

#[钛妹]: intersection_update有何妙用？
set8 = {10, 20, 30}
set9 = {20, 30, 40}
set8.intersection_update(set9)  # 原地保留交集
print(set8)                     # {20, 30}

#[钛妹]: 对比普通交集方法？
set10 = {10, 20, 30}
set11 = {20, 30, 40}
temp = set10 & set11
print(temp)                    # {20, 30}
print(set10)                   # 原集合不变 {10,20,30}

#[钛哥]: 关键方法总结：
# difference_update() 原地差集  示例: s.difference_update(t)
# discard()          安全删除   示例: s.discard(x)
# intersection()     取交集     & 示例: s & t
# intersection_update() 原地交集 示例: s.intersection_update(t)

#[钛妹]: 终于明白带update的方法都是直接修改原集合，不带的是返回新集合！
#[钛妹]: 对了各位！持续学习才是硬道理！点赞关注不迷路！